#include "../resources/Animal_virtual_baseVers.h"

namespace example {
    /**
     * 虚继承
     * 将 ZooAnimal 定义为 Raccoon 和 Bear 的虚基类
     * 表示在后续的派生类当中共享虚基类的同一份实例
     * 关键字 public 和 virtual 的顺序随意
     */
    class Raccoon : public virtual ZooAnimal { /* ... */ };
    class Bear : virtual public ZooAnimal { /* ... */ };

    // Panda 中只有一个 ZooAnimal 基类部分
    // 如果继承方式不是虚继承，则 Panda 中 Bear 和 Raccoon 各有一个 ZooAnimal 基类部分
    class Panda : public Bear, public Raccoon, public Endangered { /* ... */ };
}
